package com.ranyk.www.util;

import org.apache.shiro.crypto.hash.Md5Hash;

/**
 * CLASS_NAME: PasswordUtils.java <br/>
 *
 * @author ranyk           <br/>
 * @version V1.0           <br/>
 * @decription: 密码处理工具类  <br/>
 * @date: 2022-04-03 <br/>
 */
public class PasswordUtils {


    /**
     * 迭代次数
     */
    private static final int ITERATIONS = 6;
    /**
     * 盐值长度
     */
    private static final int SALT_NUMBER = 6;

    /**
     * 私有化构造方法
     */
    private PasswordUtils() {
        throw new AssertionError();
    }

    /**
     * 字符串加密函数MD5实现
     *
     * @param password  密码
     * @param loginName 用户名
     * @param salt      盐值
     * @return 返回加密后的字符串
     */
    public static String getMd5(String password, String loginName, String salt) {
        return new Md5Hash(password, getCredentialsSalt(loginName, salt), ITERATIONS).toString();
    }

    /**
     * 证书凭证
     */
    public static String getCredentialsSalt(String loginName, String salt) {
        return loginName + salt;
    }

    /**
     * 获得密码盐值
     */
    public static String getSalt() {
        return RandomUtils.getString(SALT_NUMBER);
    }

}
